package be.ipl.pigolo.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;

@SuppressWarnings("serial")
public class GestionFichierImpl implements GestionFichier, Serializable {
	private File monfichier;

	public GestionFichierImpl() {
		super();
	}

	public GestionFichierImpl(int numFichier) {
		File dossier = new File(Paths.PATH_LOG);
		if (!dossier.exists())
			dossier.mkdirs();
		monfichier = new File(Paths.PATH_LOG + "/" + numFichier + ".log");
	}

	@Override
	public boolean inscrireUneLigne(String ligne) {

		try {
			ligne += System.getProperty("line.separator");
			FileWriter ecrire = new FileWriter(monfichier, true);
			ecrire.write(ligne);
			ecrire.flush();
			ecrire.close();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
		return true;
	}

	@SuppressWarnings({ "finally" })
	@Override
	public String lireUnFichier() {
		String fichierLog = "";
		try {
			InputStream ips = new FileInputStream(monfichier);
			InputStreamReader ipsr = new InputStreamReader(ips);
			BufferedReader br = new BufferedReader(ipsr);
			String ligne;
			while ((ligne = br.readLine()) != null) {
				fichierLog += ligne + "\n";
			}
			br.close();
		} catch (FileNotFoundException e) {

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			return (fichierLog != "" ? fichierLog
					: "Fichier log inexistant pour le moment");
		}
	}

	@Override
	public boolean RAZ() {
		if (monfichier.delete()) {
			try {
				return monfichier.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return false;
	}

	@Override
	public boolean estVide() {
		return monfichier.length() == 0;
	}
}
